An Adequate, Denotational, Functional-Style Semantics for Typed FlatCurry
نویسندگان
چکیده
With the aim of putting type-based reasoning for functional logic languages, as recently explored by Christiansen et al. (2010), on a formal basis, we develop a denotational semantics for a typed core language of Curry. Dealing with the core language FlatCurry rather than with full Curry suffices, since there exists a type-preserving translation from the latter into the former. In contrast to existing semantics for functional logic languages, we deliberately approach the problem “from the functional side”. That is, rather than adapting approaches previously known from the study of (resolution-like) semantics for logic languages, we aim for a semantics in the spirit of standard denotational semantics for the polymorphic lambda calculus. We claim and set out to prove that the presented semantics is adequate with respect to an existing operational semantics. A particularly interesting aspect, we think, is that we give the first denotational treatment of recursive let-bindings in combination with call-time choice.
منابع مشابه
Institut für Informatik III der Rheinischen Friedrich-Wilhelms-Universität Bonn An Adequate, Denotational, Functional-Style Semantics for Typed FlatCurry without Letrec
With the aim of putting type-based reasoning for functional logic languages, as recently explored by Christiansen et al. (2010), on a formal basis, we develop a denotational semantics for a typed core language of Curry. Dealing with the core language FlatCurry rather than with full Curry suffices, since there exists a type-preserving translation from the latter into the former. In contrast to e...
متن کاملIntegrating Functional Programming Into C++: Implementation and Verification
We describe a parser-translator program that translates typed λ-terms to C++ classes so as to integrate functional programming. We prove the correctness of the translation with respect to a denotational semantics using Kripke-style logical relations.
متن کاملA Functional Abstraction of Typed Contexts
This report investigates abstracting control with functions. This is achieved by defining continuations as functions abstracting lexically a delimited context [C[ ]] rather than dynamically an unlimited one C[ ], as it is usually the case. Because their co-domain is distinguished from the final domain of Answers, such continuations can be composed, and this contrasts with the simple exceptions ...
متن کاملCall-by-push-value: Decomposing call-by-value and call-by-name
We present the call-by-push-value (CBPV) calculus, which decomposes the typed call-by-value (CBV) and typed call-by-name (CBN) paradigms into fine-grain primitives. On the operational side, we give big-step semantics and a stack machine for CBPV, which leads to a straightforward push/pop reading of CBPV programs. On the denotational side, we model CBPV using cpos and, more generally, using alge...
متن کاملFunctional concepts in C++
We describe a parser-translator program that translates typed λ-terms into C++ classes so as to integrate functional concepts. We prove the correctness of the translation of λ-terms into C++ with respect to a denotational semantics using Kripke-style logical relations. We introduce a general technique for introducing lazy evaluation into C++, and illustrate it by carrying out in C++ the example...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2010